local blogController = {}
local blogModel      = require("models.blogModel")
local util           = require("lapis.util")
local article_tool   = require("utils.article_tool")


-- Almacena un artículo para su aprobación.
function blogController:blogUpload(data)
	local message
	local current_time = os.time()

	-- Fecha de creación del artículo en formato UTC.
	data.creation_date = require("lapis.db").format_date(current_time)

	-- Elimina espacios en blanco sobrantes del título del artículo.
	data.title = string.gsub(data.title, "%s+", " ")

	-- Construye el slug o la URL que identifica a un artículo.
	-- Formato: /AÑO/MES/DÍA/TÍTULO
	data.slug = os.date("!/%Y/%m/%d/", current_time)..util.slugify(data.title)

	-- Consulta y valida si el slug existe en la base de datos.
	local exist_slug = blogModel:slugFind(data.slug)

	if exist_slug then
		message = "Por favor asigne un nombre diferente o espere máximo un día para publicar su artículo."
	else
		-- Guarda un artículo para su aprobación en la base de datos.
		blogModel:articleSave(data)
		
		message = "Artículo enviado con éxito, en breve autorizaremos tu publicación."
	end

	return message
end


-- Retorna todos los artículos en espera de aprobación de un usuario.
function blogController:blogReview(id)
	local articles   = blogModel:articlesReview(id)
	local validation = next(articles)

	if validation then
		return articles
	else
		return validation
	end
end


-- Retorna todos los artículos publicados de un usuario.


-- Formatea una cadena de búsqueda y retorna artículos por título y categoría.
function blogController:blogSearch(query)
	-- Elimina espacios de inicio y fin, y sobrantes.
	query = string.gsub(util.trim(query), "%s+", " ")

	return query
end


return setmetatable({}, { __index = blogController })